package br.com.vilababy.sigvb.repository;

import java.util.List;

import br.com.vilababy.sigvb.dao.ResponsavelDAO;
import br.com.vilababy.sigvb.dao.SIGVBDAOFactory;
import br.com.vilababy.sigvb.modelo.Aluno;
import br.com.vilababy.sigvb.modelo.Responsavel;

public class ResponsavelRepository extends AbstractSIGVBRepository<Responsavel> {

	/**
     * @author Diego Patrick da Silva Santos 
     */
	public ResponsavelRepository() {
		super(SIGVBDAOFactory.getInstancia().getResponsavelDAO());
	}

	@Override
	public Responsavel inserir(Responsavel responsavel) {
		responsavel.setId(getDao().cadastrar(responsavel).getId());
		return responsavel;
	}

	@Override
	public boolean atualizar(Responsavel responsavel) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean remover(Responsavel responsavel) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Responsavel get(Long id) {
		return ((ResponsavelDAO)getDao()).get(id, Responsavel.class);
	}

	@Override
	public Responsavel consultar(Responsavel responsavel) {
		return ((ResponsavelDAO)getDao()).consultar(responsavel);
	}
	
	public List<Responsavel> getPais(Aluno aluno) {
		return ((ResponsavelDAO)getDao()).consultarPaisAluno(aluno);
	}
	
	public List<String> consultarPorNome(Responsavel responsavel) {
		return ((ResponsavelDAO)getDao()).consultarNome(responsavel);
	}

	@Override
	public List<Responsavel> listar(Responsavel modelo, int primeiroRegistro,
			int totalRegistro) {
		return null;
	}
	
	public int totalResponsaveisFiltrados() {
		return ((ResponsavelDAO) getDao()).getQuantidadeFiltrados();
	}
	
	public List<Responsavel> listarParcial(int primeiroRegistro, int totalRegistros) {
		return ((ResponsavelDAO) getDao()).listarPaginacao(primeiroRegistro, totalRegistros);
	}
	
	public Responsavel consultarResponsavelFinanceiro(Aluno aluno) {
		return ((ResponsavelDAO) getDao()).consultarResponsavelFinanceiro(aluno);
	}
	
	public boolean verificarExistenciaPai(Aluno aluno) {
		Responsavel pai = ((ResponsavelDAO) getDao()).consultarPai(aluno);
		
		if (pai!= null && pai.getId() != null)
			return Boolean.TRUE;
		return Boolean.FALSE;
			
	}
	
	public boolean verificarExistenciaMae(Aluno aluno) {
		Responsavel mae = ((ResponsavelDAO) getDao()).consultarMae(aluno);
		
		if (mae!= null && mae.getId() != null) 
			return Boolean.TRUE;
		return Boolean.FALSE;
			
	}
	
}
